メインコンテンツまでスキップ

Goの基本構文を理解しよう

基本構文を理解しよう

GOは、シンプルで読みやすい構文が特徴のプログラミング言語です。以下に、Goの基本的な構文要素を説明します。

1. パッケージ宣言

Goのプログラムはパッケージで構成されます。各ファイルの最初に、所属するパッケージを宣言します。実行可能なプログラムの場合、mainパッケージを使用します。

2. インポート

他のパッケージを使用するために、importキーワードを使用してパッケージをインポートします。標準ライブラリや外部ライブラリを利用できます。

3. 関数定義

関数はfuncキーワードを使用して定義します。関数名、引数、戻り値の型を指定します。main関数はプログラムのエントリーポイントです。

// 概要:コンソール画面に「Hello, World!」と表示させるプログラム

// プログラムが所属するパッケージの宣言
// Goのプログラムはパッケージで構成される
// プログラムの「実行」をする場合は、mainというパッケージである必要がある
package main

// fmtというパッケージがプログラムで使用できるように、インポート
// fmtは、入出力の機能を提供するパッケージ
import "fmt"

// mainという関数を定義
// mainは、プログラム開始時に最初に実行される
func main() {

// コンソールに「Hello, World!」と表示させる処理
fmt.Println("Hello, World!")
}

四則演算を理解しよう

GOでは、基本的な四則演算を簡単に行うことができます。以下に、Goでの四則演算の例を示します。 足し算+、引き算-、掛け算*、割り算/の各演算子を使用して計算を行います。 割り算の余り計算を行うための%演算子も紹介します。

package main

import "fmt"

func main() {

// -----------------------------
// 基本的な四則演算
// -----------------------------

// 足し算は、+ の記号を使用する
// %d は、整数値を文字列に埋め込むために使用される"
fmt.Println(20 + 10)

// 引き算は、- の記号を使用する
fmt.Println(20 - 10)

// 掛け算は、* の記号を使用する
fmt.Println(20 * 10)

// 割り算は、/ の記号を使用する
fmt.Println(20 / 10)

// -----------------------------
// 割り算に関する補足
// -----------------------------

// 割り算の余りは、% の記号で求められる
fmt.Println(20 % 7)

// ゼロで割り算をしようとするとエラーになる
// // はコメントと言い、実行されない処理を表す
// // を外すと、「invalid operation: division by zero」のエラーになる
// fmt.Println(10 / 0)
}

変数を使ってみよう

Goでは、変数はvarキーワードを使用して宣言します。型を明示的に指定するか、型推論を利用できます。

package main

import "fmt"

func main() {

// 変数の宣言と初期化
var x int = 10
var y int = 20

// 変数を使った計算
fmt.Println(x + y)
fmt.Println(x * y)
fmt.Println(x - y)
fmt.Println(x / y)
fmt.Println(x % y)
}

変数の型には、整数型(int)、浮動小数点型(float64)、文字列型(string)、ブール型(bool)などがあります。 Goは静的型付け言語であり、変数の型は宣言時に決定されます。

package main

import (
"fmt"
)

func main() {
// Goで扱える変数の型

// int・・・整数値
var int_value int = 10
fmt.Println(int_value)

// String・・・文字列
var string_value string = "Hello World"
fmt.Println(string_value)

// float・・・小数
// float32・・・32ビット、約7桁の精度
// float64・・・64ビット、約15桁の精度
var float_value float32 = 3.14
fmt.Println(float_value)

// bool・・・真偽(true or false)
var bool_value bool = true
fmt.Println(bool_value)
}

型推論を理解しよう

Goでは、変数の型を明示的に指定しなくても、値から型を推論して自動的に決定することができます。これを型推論と呼びます。

package main

import (
"fmt"
)

func main() {
// 型推論
// 型を定義しなくても、値の内容を推論して型を定義してくれる

// 整数値を推論
result1 := 10
fmt.Println(result1)

// 小数と整数を計算すると、小数になる
result2 := 3 + 0.14
fmt.Println(result2)

// 整数値同士の割り算は、整数になる
result3 := 10 / 3
fmt.Println(result3)

// 片方が小数なら、結果も少数になる
result4 := 10 / 3.0
fmt.Println(result4)

// 他にも様々なパターンがあるので、色々試してみましょう。

}

変数の型を明示的に指定する場合と、型推論を利用する場合の使い分けは、コードの可読性や保守性に影響します。一般的には、型が明確である場合は型推論を利用し、複雑な型や意図が伝わりにくい場合は明示的に型を指定することが推奨されます。

変数の型を確認方法は、reflectパッケージのTypeOf関数を使用します。

package main
import (
"fmt"
"reflect"
)
func main() {
var x = 42
var y = "Hello, Go!"
var z = 3.14

fmt.Println("xの型:", reflect.TypeOf(x))
fmt.Println("yの型:", reflect.TypeOf(y))
fmt.Println("zの型:", reflect.TypeOf(z))
}
// 出力例:
xの型: int
yの型: string
zの型: float64